#region Using References

using System;

#endregion

namespace Beaker.OpenCube.Game.Mobs
{
	public sealed class Sheep
		: MobData, ICanBreed
	{
		private bool _isSheared;

		/// <summary>
		/// Gets or sets a value indicating whether this sheep is sheared.
		/// </summary>
		/// <value>
		/// <c>true</c> if this sheep is sheared; otherwise, <c>false</c>.
		/// </value>
		public bool IsSheared
		{
			get { return _isSheared; }
			set { SetValue( ref _isSheared, value ); }
		}

		private WoolColor _color;

		/// <summary>
		/// Gets or sets the color of the sheep.
		/// </summary>
		/// <value>
		/// The color of the sheep.
		/// </value>
		public WoolColor Color
		{
			get { return _color; }
			set { SetValue( ref _color, value ); }
		}

		private TimeSpan _inLoveDuration;

		/// <summary>
		/// Gets or sets the time until the mob loses its breeding hearts and stops searching for a mate.
		/// </summary>
		/// <value>
		/// The time until the mob loses its breeding hearts and stops searching for a mate.
		/// </value>
		public TimeSpan InLoveDuration
		{
			get { return _inLoveDuration; }
			set { SetValue( ref _inLoveDuration, value ); }
		}

		private TimeSpan _age;

		/// <summary>
		/// Gets or sets the age of the mob.
		/// </summary>
		/// <remarks>
		/// When negative, the mob is a baby. 
		/// When 0 or above, the mob is an adult. 
		/// When above 0, represents the number of ticks before this mob can breed again.
		/// </remarks>
		public TimeSpan Age
		{
			get { return _age; }
			set { SetValue( ref _age, value ); }
		}
	}
}